const xtpl = require('xtpl');
const path = require('path');
const md5 = require('md5');
const captchapng = require('captchapng');	// 验证码图片	
const db = require('../configs/database')
const baseCtr = require('./baseController');
const nodemailer = require('nodemailer');
const smtpTransport = require('nodemailer-smtp-transport');
const wellknown = require('nodemailer-wellknown');
var config = wellknown('QQ');
config.auth = {
    user: '3176027419@qq.com',
    pass: 'jnikugrszpizdhef',	// 授权码
}
module.exports.mainIndex = function (req, res) {
    // db.query('select sub_id,count(stu_id) as snum from pre_student_subject_data group by sub_id',data)
    db.table('subject').count('sub_id').then(function (sub_all) {
        db.table('admin').count('admin_id').then(function (amin_all) {
            db.table('student').count('stu_id').then(function (stu_all) {
            db.table('class').count('class_id').then(function (cla_all) {
                
              
                    var data = [];
                    db.query('select ss.sub_id,s.sub_name,count(ss.stu_id) as snum from pre_student_subject_data as ss left join pre_subject as s on ss.sub_id=s.sub_id group by ss.sub_id order by snum desc',data).then(function(sub_data){

                        xtpl.renderFile(
                        path.join(__dirname, '../view/admin/main_index.html'), {
                        page: 'mainIndex',
                        sub_all: sub_all,
                        amin_all: amin_all,
                        stu_all: stu_all,
                        cla_all: cla_all,
                        sub_data:sub_data
                    },
                        function (err, content) {
                            res.setHeader('Content-Type', 'text/html;charset=utf-8');
                            res.send(content);

                        })
                    })
                })
            })
        })
    })
}
module.exports.register = function (req, res) {
    xtpl.renderFile(
        path.join(__dirname, '../view/admin/register.html'), {

    },
        function (err, content) {
            res.setHeader('Content-Type', 'text/html;charset=utf-8');
            res.send(content);

        }
    )
};
module.exports.registerData = function (req, res) {
    db.table('admin').where({ admin_email: req.body.email }).find().then(function (result) {
        if (JSON.stringify(result) == '{}') {
            var data = {
                admin_email: req.body.email,
                admin_pwd: req.body.pwd,
                register_time: (new Date().getTime()) / 1000
            }
            db.table('admin').add(data).then(function () {
                res.send(JSON.stringify({ error: 0, msg: '注册成功' }))
            })
        } else {
            res.send(JSON.stringify({ error: 1, msg: '已被注册' }))
        }
    })

};
module.exports.login = function (req, res) {
    // 显示视图
    xtpl.renderFile(
        path.join(__dirname, '../view/admin/login.html'),	// 加载视图文件
        {},
        function (err, content) {
            // 设置输出的内容类型 html
            res.setHeader('Content-Type', 'text/html;charset=utf-8');
            res.send(content);
        }
    )
}

// 登录操作
module.exports.loginData = function (req, res) {
    	// 增加多一步：图片验证码验证
	// console.log(req.session.imgcode)
	// if(req.session.imgcode!=req.body.code){
	// 	res.send(JSON.stringify({error:1,msg:'验证码错误'}));
	// 	return false;
	// }
    // 逻辑：查询邮箱+密码
    db.table('admin').where({ admin_email: req.body.email, admin_pwd: req.body.pwd }).find().then(function (result) {
        if (JSON.stringify(result) != '{}') {
            // req.session.email=req.bod.email;
            // 成功登录
            
			// 把邮箱记录到session里面
			req.session.email = req.body.email;
            res.send(JSON.stringify({ error: 0, msg: '登录成功' }))
        } else {
            res.send(JSON.stringify({ error: 1, msg: '邮箱或密码错误' }))
        }
    });
}

// 给邮箱发送验证码
module.exports.sendCode = function (req, res) {
    // console.log(req.query)
    // console.log(req.body)
    // 接收要发送的邮箱地址
    var email = req.body.email;

    db.table('admin').where({ admin_email: req.body.email }).find().then(function (result) {
        if (JSON.stringify(result) == '{}') {
            // 获取随机数(验证码)
            var code = baseCtr.randomString();
            res.cookie("code", code, { maxAge: 1 * 60 * 1000, signed: true }); //设置cookie和过期时间

            // 发送操作
            var transporter = nodemailer.createTransport(smtpTransport(config));
            var mailOptions = {
                from: "lin~<3176027419@qq.com>",  // 发件人
                to: email,	// 收件人
                subject: "注册账号",	// 标题
                text: "text plain",	// 文本(忽略)
                html: "<div>尊敬的用户，您的验证码是：<span style='color:red;'>" + code + "</span></div>"	// 内容
            };
            // 发送方法
            transporter.sendMail(mailOptions, function (error, info) {
                if (error) {	// 错误信息
                    return console.log(error);
                }
                // 发送结果
                // console.log('Message sent: ' + info.response);
                res.send(JSON.stringify({ error: 0, msg: '发送成功' }))

            });
        } else {
            // 要返回json字符串
            res.send(JSON.stringify({ error: 1, msg: '该邮箱已被注册' }));
        }
    })
}

// 图片验证码
module.exports.imgCode = function (req, res) {
    // var code = baseCtr.randomString();	// 随机数
    var code = parseInt(Math.random() * 9000 + 1000);	// 纯数字

    // 使用session记录验证码
    req.session.imgcode = code;

    var p = new captchapng(100, 30, code);
    p.color(0, 0, 0, 0);//背景颜色
    p.color(80, 80, 80, 255);
    var img = p.getBase64();
    var imgbase64 = new Buffer.from(img, 'base64');
    res.writeHead(200, {
        'Content-Type': 'image/png'
    });
    res.end(imgbase64);	//base64文本
}
// 退出登录
module.exports.logout = function(req,res){
	// 删除session里面的email
	req.session.email = undefined;

	res.redirect('/admin/main/login');
	// baseCtr.sendMsg('您已退出后台',res);	// 是后退的，不行
}

// 管理员信息
module.exports.adminInfo = function(req,res){
	// 删除session里面的email
	console.log(req.session.email)
	res.send(req.session.email);
}